import request from "@/request";

// 参数接口
export interface UpdateBooknoParams {
    id?: number;
    code?: string;
    booksId?: number;
    booksName?: string;
    name?: string;
    userName?: string;
    borrowDate?: string;
    borrow?: number;
    createBy?: string;
    createTime?: string;
    updateBy?: string;
    updateTime?: string;
    undock?: number;
    unlucky?: number;
    remark?: string;
}

// 响应接口
export interface UpdateBooknoRes {
    message: string;
    success: boolean;
    code: number;
    data: Record<string, unknown>;
}

/**
 * 修改编号
 * @param {object} params $!{table.comment}
 * @param {number} params.id 编号
 * @param {string} params.code 书本条码
 * @param {number} params.booksId 书册编号
 * @param {string} params.booksName 书册名称
 * @param {string} params.name 书本名称
 * @param {string} params.userName 借阅用户
 * @param {string} params.borrowDate 借阅时间
 * @param {number} params.borrow 借阅状态（0-借出 1-库存）
 * @param {string} params.createBy 创建者
 * @param {string} params.createTime 创建时间
 * @param {string} params.updateBy 更新者
 * @param {string} params.updateTime 更新时间
 * @param {number} params.undock 伪删除（0-已 1-未）
 * @param {number} params.unlucky 状态（0-禁用 1-正常）
 * @param {string} params.remark 备注
 * @returns
 */
export function updateBookno(params: UpdateBooknoParams): Promise<UpdateBooknoRes> {
    return request.post(`/booknoEntity/update`, params);
}

// 响应接口
export interface RecoverListBooknoRes {
    message: string;
    success: boolean;
    code: number;
    data: Record<string, unknown>;
}

/**
 * 恢复列表
 * @returns
 */
export function recoverListBookno(): Promise<RecoverListBooknoRes> {
    return request.post(`/booknoEntity/recoverList`);
}

// 响应接口
export interface RecoverBooknoRes {
    message: string;
    success: boolean;
    code: number;
    data: Record<string, unknown>;
}

/**
 * 恢复数据
 * @param {string} param
 * @returns
 */
export function recoverBookno(param: string): Promise<RecoverBooknoRes> {
    return request.post(`/booknoEntity/recover/${param}`);
}

// 响应接口
export interface ListPageBooknoRes {
    message: string;
    success: boolean;
    code: number;
    data: Record<string, unknown>;
}

/**
 * 列表分页
 * @param {string} page
 * @param {string} pageSize
 * @returns
 */
export function listPageBookno(page: number, pageSize: number): Promise<ListPageBooknoRes> {
    return request.post(`/booknoEntity/listPageBookno?page=${page}&pageSize=${pageSize}`);
}

// 参数接口
export interface InsertBooknoParams {
    id?: number;
    code?: string;
    booksId?: number;
    booksName?: string;
    name?: string;
    userName?: string;
    borrowDate?: string;
    borrow?: number;
    createBy?: string;
    createTime?: string;
    updateBy?: string;
    updateTime?: string;
    undock?: number;
    unlucky?: number;
    remark?: string;
}

// 响应接口
export interface InsertBooknoRes {
    message: string;
    success: boolean;
    code: number;
    data: Record<string, unknown>;
}

/**
 * 保存数据
 * @param {object} params $!{table.comment}
 * @param {number} params.id 编号
 * @param {string} params.code 书本条码
 * @param {number} params.booksId 书册编号
 * @param {string} params.booksName 书册名称
 * @param {string} params.name 书本名称
 * @param {string} params.userName 借阅用户
 * @param {string} params.borrowDate 借阅时间
 * @param {number} params.borrow 借阅状态（0-借出 1-库存）
 * @param {string} params.createBy 创建者
 * @param {string} params.createTime 创建时间
 * @param {string} params.updateBy 更新者
 * @param {string} params.updateTime 更新时间
 * @param {number} params.undock 伪删除（0-已 1-未）
 * @param {number} params.unlucky 状态（0-禁用 1-正常）
 * @param {string} params.remark 备注
 * @returns
 */
export function insertBookno(params: InsertBooknoParams): Promise<InsertBooknoRes> {
    return request.post(`/booknoEntity/insert`, params);
}

// 响应接口
export interface ImportExcelBooknoRes {
    message: string;
    success: boolean;
    code: number;
    data: Record<string, unknown>;
}

/**
 * 导入数据
 * @param {string} file
 * @returns
 */
export function importExcelBookno(file: object): Promise<ImportExcelBooknoRes> {
    return request.post(`/booknoEntity/importExcel`,file);
}

// 响应接口
export interface FindByNameBooknoRes {
    message: string;
    success: boolean;
    code: number;
    data: Record<string, unknown>;
}

/**
 * 查询名称
 * @param {string} param
 * @returns
 */
export function findByNameBookno(param: string): Promise<FindByNameBooknoRes> {
    return request.post(`/booknoEntity/findByNameBookno/${param}`);
}

// 响应接口
export interface FindByIDBooknoRes {
    message: string;
    success: boolean;
    code: number;
    data: Record<string, unknown>;
}

/**
 * 查询编号
 * @param {string} param
 * @returns
 */
export function findByIDBookno(param: string): Promise<FindByIDBooknoRes> {
    return request.post(`/booknoEntity/findByIDBookno/${param}`);
}

// 参数接口
export interface FindBooknoParams {
    id?: number;
    code?: string;
    booksId?: number;
    booksName?: string;
    name?: string;
    userId?: number;
    userName?: string;
    borrowDate?: string;
    borrow?: number;
    createBy?: string;
    createTime?: string;
    updateBy?: string;
    updateTime?: string;
    undock?: number;
    unlucky?: number;
    remark?: string;
}

// 响应接口
export interface FindBooknoRes {
    message: string;
    success: boolean;
    code: number;
    data: Record<string, unknown>;
}

/**
 * 条件查询
 * @param {object} params $!{table.comment}
 * @param {number} params.id 编号
 * @param {string} params.code 书本条码
 * @param {number} params.booksId 书册编号
 * @param {string} params.booksName 书册名称
 * @param {string} params.name 书本名称
 * @param {string} params.userName 借阅用户
 * @param {string} params.borrowDate 借阅时间
 * @param {number} params.borrow 借阅状态（0-借出 1-库存）
 * @param {string} params.createBy 创建者
 * @param {string} params.createTime 创建时间
 * @param {string} params.updateBy 更新者
 * @param {string} params.updateTime 更新时间
 * @param {number} params.undock 伪删除（0-已 1-未）
 * @param {number} params.unlucky 状态（0-禁用 1-正常）
 * @param {string} params.remark 备注
 * @returns
 */
export function findBookno(params: FindBooknoParams): Promise<FindBooknoRes> {
    return request.post(`/booknoEntity/findBookno`, params);
}

// 响应接口
export interface ExportExcelBooknoRes {}

/**
 * 导出数据
 * @returns
 */
export function exportExcelBookno(): Promise<ExportExcelBooknoRes> {
    return request.post(`/booknoEntity/exportExcel`, {}, {
        responseType: "blob"
    });
}

// 响应接口
export interface DeleteTempBooknoRes {
    message: string;
    success: boolean;
    code: number;
    data: Record<string, unknown>;
}

/**
 * 暂时删除
 * @param {string} param
 * @returns
 */
export function deleteTempBookno(param: string): Promise<DeleteTempBooknoRes> {
    return request.post(`/booknoEntity/deleteTemp/${param}`);
}

// 响应接口
export interface DeleteBooknoRes {
    message: string;
    success: boolean;
    code: number;
    data: Record<string, unknown>;
}

/**
 * 永久删除
 * @param {string} param
 * @returns
 */
export function deleteBookno(param: string): Promise<DeleteBooknoRes> {
    return request.post(`/booknoEntity/delete/${param}`);
}


// 响应接口
export interface FindBooknoBorrowRes {
    message: string;
    success: boolean;
    code: number;
    data: Record<string, unknown>;
}

/**
 * 用户书本
 * @returns
 */
export function findBooknoBorrow(): Promise<FindBooknoBorrowRes> {
    return request.post(`/booknoEntity/findBooknoBorrow`);
}

// 参数接口
export interface FindBooknoUserParams {
    code?: string;
    name?: string;
}

// 响应接口
export interface FindBooknoUserRes {
    message: string;
    success: boolean;
    code: number;
    data: Record<string, unknown>;
}

/**
 * 用户查询
 * @param {object} params BooknoFind
 * @param {string} params.code
 * @param {string} params.name
 * @returns
 */
export function findBooknoUser(params: FindBooknoUserParams): Promise<FindBooknoUserRes> {
    return request.post(`/booknoEntity/findBooknoUser`, params);
}
